#pragma once

#include "Frog.h"
#include "Drainage.h"
#include "Rail.h"
#include "Drawable.h"
#include "Resolution.h"
#include <list>
#include "Sketcher.h"

class Stage : public Element, public Drawable{

	// Attributes:
	
	private: Frog* frog;    

	private: Drainage* drainage;    

	private: Rail* rail;

	private: Position * position;

	private: Texture * texture;

	private: Color * elementColor;

	private: Color * lineColor;

	private: Resolution * resolution;
	
	private: Sketcher* sketcher;


    // Methods:

	public: Drainage* getDrainage();

	public: Frog* getFrog();

	public: Rail* getRail();

	public: void setDrainage(Drainage * drainage);

	public: void setFrog(Frog* frog);

	public: void setRail(Rail* rail);

	public: void addElement(Element * element);
	/*-------------Drawable interface--------------------*/
    public: virtual void setPosition(Position *position);

	public: virtual Position *getPosition();

	public: virtual Texture *getTexture();

	public: virtual void setTexture(Texture *texture);

	public: virtual Color * getElementColor();

	public: virtual void setElementColor(Color * color);

	public: virtual Color * getLineColor();

	public: virtual void setLineColor(Color * color);

	public: Resolution * getResolution(void);

	public: void setResolution(Resolution * resolution);

	public: virtual void draw(void);

	public: virtual void initialize(void);
				
	public: virtual float getMinXPos();
	
	public: virtual float getMinYPos();
	
	public: virtual float getMaxXPos();
	
	public: virtual float getMaxYPos();

	/*------------------- Constructor --------------------*/
	public: Stage();

	public: virtual ~Stage();
};
